1. Field of the Invention
This invention relates generally to improving the performance of a computer system, and more particularly, to measuring latency on servers with various loads to infer user perception of performance.
2. Description of the Related Art
In general, a computer network is an interconnection of computer systems and other devices for facilitating the transfer of data and commands between and among the computer systems and network devices making up the network. One type of computer network, generally referred to as a client-server network, is used extensively in both local area networks (“LANs”) and worldwide networks, such as the Internet. In a client-server network, several client computer systems are generally connected to a common server computer system through one of a variety of network connections. Users of this type of network may communicate with the network via the client systems. Furthermore, applications that are resident in the various client computer systems typically establish some sort of association with a single server system. With such an arrangement, the client applications may exchange commands and data with the associated server system.
By way of example, a user may be utilizing an application on a client system that provides world wide web (“WWW”) browsing capabilities. When the user wishes to print a web page (i.e., a document from the WWW), for example, the WWW browser application may send the web page and a print command over the network to the server system. In one embodiment, the server system may then direct a printer, which might be connected to the server system, to print the web page.
One type of client-server network is known as “thin client technology.” The term “thin client technology” generally refers to a solution where networked personal computers are centrally-managed from a main file server. All applications are stored centrally on the file server (as opposed to being stored on each client system), thereby eliminating the need for installing and administering applications on individual workstations. Furthermore, in a thin client system, only the central file server is generally maintained and upgraded, thereby reducing the costs of ownership. A thin client workstation typically sends the user's keystrokes and mouse clicks to the main server, where interaction with the application takes place. The main server may send graphical data to the client, where it is displayed on the client monitor, for example. The server may also send audio data to the client, where it may be heard on a speaker system, for example. The main server and client systems create a distributed computing environment, sharing time and resources of the main server among the client systems. In a thin client system, the client computer is typically devoid of CD-ROM players, diskette drives, and expansion slots. In other words, the client computer acts like a traditional “dumb” terminal, simply serving as an input/output interface to the main server.
With such a client-server arrangement, several potential flaws may arise. For example, the server system may fail, leaving the client systems without any access to the server system. In another example, the server system may not have sufficient performance (e.g., memory) to provide acceptable service to all of its clients. A lack of sufficient performance may be a result of having too many users (i.e., a high load) on a server system. In the past, when computer resources were more limited, computer users may have been more accustomed to sharing processing power and other computing resources. There was generally more tolerance for excess latency periods. However, a plurality of people today have their own computer. A personal computer generally has one or more processors dedicated to personal computing and is typically optimized to control user-perceived latency times. Therefore, computer users today may not tolerate latency times on client systems in excess of what their desktops provide. As a result, there is a demand for an accurate and optimal method of measuring server system performance to predict user-tolerance of a server system with a particular load.
Performance of a server system is traditionally measured through the use of benchmarks. A benchmark is a standardized test used to measure the performance of a computer system. The benchmark usually compares the performance of one computer system against the performance of others. Benchmarks are used regularly by computer magazines to compare the performance of various computer systems. Although many early benchmarks concentrated on hardware performance of the computer system, such as processor performance, there has been a trend in recent years towards measuring the performance of high-speed networks. A plurality of benchmarks now test network performance. Popular network performance benchmarks include Netperf, Network Protocol Independent Performance Evaluator (“NetPIPE”), and Ziff Davis Media's® NetBench® benchmark.
Although benchmarks are a popular way to compare and measure network performance, they do have their limitations. For example, benchmarks are typically system-dependent. Generally, benchmarks are useful only if they are specific to the network system, the applications, and the set of data that a particular user may use. If the computer system changes, the benchmark performance may change too. For example, a network system with a certain amount of random access memory (“RAM”) may not execute a particular application as efficiently as the same network system with twice as much RAM. As a result, a network benchmark may need to be executed a plurality of times to determine the performance of various network systems with different hardware configurations. Furthermore, network performance may change with additional users. Because it is difficult to predict how a particular user may utilize the network system resources, current network benchmarks do not provide an accurate method of testing the additional load on a network system caused by additional users. For example, although one user may be using the network system mainly to check e-mail, another user may be using the network system to download and play streaming audio and video files. The additional load on the network system caused by the user who downloads and plays streaming audio and video files may not be anticipated by running a benchmark for an “average” user. As a result, a server administrator, for example, may authorize additional users, which may inadvertently overburden the system and cause network performance problems, such as low throughput and high latency periods.
As mentioned, computer users today are accustomed to their fast personal computers at home, and generally, do not tolerate long latency periods on time-shared network systems. As a result, there is a need to accurately measure latency periods to determine whether such latency periods are tolerable to users. Although attempts have been made to measure congestion and efficiency over computer networks, none operate well over a wide range of network conditions.